From: Abhijith PA Date: Mon, 5 Oct 2026 04:40:12 +0000 (+0530) Subject: Import puma_5.6.5-3+deb12u2.debian.tar.xz X-Git-Tag: archive/raspbian/5.6.5-3+rpi1+deb12u2^2~11^2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=22a2554a0dd8e3d4486c672623029871256fc13d;p=puma.git Import puma_5.6.5-3+deb12u2.debian.tar.xz [dgit import tarball puma 5.6.5-3+deb12u2 puma_5.6.5-3+deb12u2.debian.tar.xz] --- 22a2554a0dd8e3d4486c672623029871256fc13d diff --git a/README.source b/README.source new file mode 100644 index 0000000..620cda3 --- /dev/null +++ b/README.source @@ -0,0 +1,14 @@ +puma (4.3.1-1) + + Several tests have been disabled by default: + + - test/test_puma_server_ssl.rb has been disabled because all tests fail + randomly. However these tests have never been performed in puma 3.x and + they also work randomly. So until someone can look into them and fix them, + we decided to not run them (see also #921931). + + - test_control_for_ssl (test/test_cli.rb) and + test_control_ssl (test/test_pumactl.rb) show similar issues and don't seem + to imply that the package fails to work. So they have been disabled too. + + -- Daniel Leidert Wed, 05 Feb 2020 23:51:51 +0100 diff --git a/changelog b/changelog new file mode 100644 index 0000000..b0ff7f6 --- /dev/null +++ b/changelog @@ -0,0 +1,308 @@ +puma (5.6.5-3+deb12u2) bookworm-security; urgency=high + + * Non-maintainer upload by the Debian LTS Team. + * Fix CVE-2026-47736, CVE-2026-47737. + * Refresh ssl certs for the tests + + -- Abhijith PA Mon, 05 Oct 2026 10:10:12 +0530 + +puma (5.6.5-3+deb12u1) bookworm; urgency=medium + + * Team upload + * d/patches/ + + CVE-2023-40175.patch: Fix CVE-2023-40175, incorrect behavior when + parsing chunked transfer encoding bodies and zero-length + Content-Length headers in a way that allowed HTTP request + smuggling. (Closes: #1050079) + + + CVE-2024-21647.patch: Fix CVE-2024-21647 by limiting the size of + chunk extensions. (Closes: #1060345) + + + CVE-2024-45614.patch: Fix CVE-2024-45614, clients could clobber + values set by intermediate proxies (such as X-Forwarded-For) by + providing a underscore version of the same header. + (Closes: #1082379) + + -- Abhijith PA Wed, 29 Jan 2025 07:26:33 +0530 + +puma (5.6.5-3) unstable; urgency=medium + + * Team upload. + * d/control (Vcs-Git): Fix URL. + + -- Daniel Leidert Thu, 09 Feb 2023 16:24:05 +0100 + +puma (5.6.5-2) unstable; urgency=medium + + * debian/ruby-tests.rake: skip test that fails often (Closes: #1006022) + * debian/ruby-tests.rake: exclude tests that fail often but not always + + -- Antonio Terceiro Wed, 02 Nov 2022 09:26:37 -0300 + +puma (5.6.5-1) unstable; urgency=medium + + * Update watch file for github.com pattern change + * New upstream version 5.6.5 + * Refresh patches + * Bump Standards-Version to 4.6.1 (no changes needed) + + -- Pirate Praveen Sun, 16 Oct 2022 22:44:46 +0530 + +puma (5.6.4-1) unstable; urgency=medium + + * New upstream version 5.6.4 + * Refresh patches + * Disable some tests that fail with + NameError: uninitialized constant Puma::LogWriter + * Remove tmp/restart.txt in clean + + -- Pirate Praveen Mon, 04 Apr 2022 13:24:10 +0530 + +puma (5.5.2-2) unstable; urgency=medium + + * Team upload + * debian/rules: force an UTF-8 locale + * debian/ruby-tests.rake: wrap lines + * debian/ruby-tests.rake: run all ssl tests on autopkgtest only + * debian/test/control: give ssl test a name + + -- Antonio Terceiro Tue, 02 Nov 2021 16:35:12 -0300 + +puma (5.5.2-1) unstable; urgency=medium + + * Team upload + * New upstream version 5.5.2 + - Builds and tests fine again (Closes: #998295) + * Add build-dependency on ruby-localhost + * debian/rules: exclude several unnecessary files from installation + + -- Antonio Terceiro Tue, 02 Nov 2021 14:39:10 -0300 + +puma (5.3.2-3) unstable; urgency=medium + + * Use --gem-install layout option of dh-ruby + + -- Pirate Praveen Tue, 12 Oct 2021 02:24:33 +0530 + +puma (5.3.2-2) unstable; urgency=medium + + * Reupload to unstable + * Bump Standards-Version to 4.6.0 (no changes needed) + * Bump debhelper compatibility level to 13 + + -- Pirate Praveen Mon, 11 Oct 2021 03:17:23 +0530 + +puma (5.3.2-1) experimental; urgency=medium + + * New upstream version 5.3.2 (Closes: #989054) (Fixes: CVE-2021-29509) + * Refresh patches + + -- Pirate Praveen Fri, 28 May 2021 22:34:53 +0530 + +puma (4.3.8-1) unstable; urgency=medium + + * New upstream version 4.3.8 (Closes: #989054) (Fixes: CVE-2021-29509) + + -- Pirate Praveen Wed, 26 May 2021 10:24:19 +0530 + +puma (5.2.2-2) experimental; urgency=medium + + * Disable test that failied on amd64 buildd + + -- Pirate Praveen Mon, 08 Mar 2021 23:03:52 +0530 + +puma (5.2.2-1) experimental; urgency=medium + + * New upstream version 5.2.2 + * Bump Standards-Version to 4.5.1 (no changes needed) + * Refresh patches for new upstream release + * Add ruby-minitest-stub-const as build dependency + * Disable failing tests + + -- Pirate Praveen Sun, 07 Mar 2021 21:03:52 +0530 + +puma (4.3.6-1) unstable; urgency=medium + + * Team upload. + * New upstream version. + - Fixes CVE-2020-11076 and CVE-2020-11077 (closes: #972102). + * d/copyright: Minor update. + * d/puma.lintian-overrides: Add package override. + * d/ruby-tests.rake: Add logic to run SSL test. + * d/patches/*.patch: Add missing headers and refresh. + * d/source/lintian-overrides: Add source override. + * d/tests/control: Set environment variable to run the SSL tests separately + (similar to the solution used in the jekyll package). + * d/tests/test-puma-server-ssl*: Removed. + + -- Daniel Leidert Thu, 15 Oct 2020 20:57:29 +0200 + +puma (4.3.3-3) unstable; urgency=medium + + * Include patch from gitlab to improve performance + + -- Pirate Praveen Tue, 18 Aug 2020 00:15:20 +0530 + +puma (4.3.3-2) unstable; urgency=medium + + [ Daniel Leidert ] + * debian/tests/test_puma_server_ssl, + debian/tests/test_puma_server_ssl.rake: Run test/test_puma_server_ssl.rb + in an openssl enviroment not using the Debian defaults. + * debian/tests/control: Add new test. + + [ Debian Janitor ] + * Set field Upstream-Contact in debian/copyright. + * Remove obsolete fields Contact, Name from debian/upstream/metadata + (already present in machine-readable debian/copyright). + + [ Pirate Praveen ] + * Remove debian-branch option from debian/gbp.conf + * Reupload to unstable + + -- Pirate Praveen Mon, 03 Aug 2020 15:37:16 +0530 + +puma (4.3.3-1) experimental; urgency=medium + + * Team upload. + * New upstream release. + - Fixes CVE-2020-5247 (closes: #952766). + - Fixes CVE-2020-5249 (closes: #953122). + * d/control (Section): Change to web. + (Vcs-Git): Indicate branch name via -b debian/experimental. + (Homepage): Use secure URL. + (Depends): Use ${ruby:Depends}. + * d/copyright (Source): Use secure URL. + * d/rules: Add override to install upstream changelog. + * d/watch: Use package name for tarball. + + -- Daniel Leidert Thu, 05 Mar 2020 01:34:17 +0100 + +puma (4.3.1-1) experimental; urgency=medium + + * Team upload. + * New upstream release + - Fixes CVE-2019-16770 Keepalive thread overload/DoS (closes: #946312). + * d/control (Rules-Requires-Root): Set to binary-targets. + (Build-Depends, Depends): Add ruby-nio4r. + (Build-Depends): Add curl for test/test_integration_single.rb. + * d/ruby-tests.rake: Disable test/test_puma_server_ssl.rb. + * d/README.source: Add to explain tests which have been disabled. + * d/patches/0004-puma.gemspec-drop-git-usage.patch: Refresh patch. + * d/patches/0011-disable-minitest-extensions.patch: Add patch. + - Disable unavailable minitest extensions (retry and proveit). + * d/patches/0012-disable-cli-ssl-tests.patch: Add patch. + - Disable CLI SSL tests. + * d/patches/0013-fix-test-term-not-accepts-new-connections.patch: Add. + - Fix test_term_not_accepts_new_connections to be locale independent. + * d/patches/0002-test_integration-disable-test-that-fails-randomly.patch, + d/patches/0003-test_cli-disable-test-that-rails-randomly.patch, + d/patches/0005-test_puma_server-disable-test-that-fails-randomly.patch, + d/patches/0006-test-helper.rb-drop-bundler-usage.patch, + d/patches/0007-test-test_cli.rb-disable-test-that-fails-randomly.patch, + d/patches/0008-fix-ssl-tests.patch, + d/patches/0009-disable-tests-failing-in-single-cpu.patch, + d/patches/0010-fix-cluster-exit-for-ruby27.patch: Remove obsolete patches. + * d/patches/series: Adjust. + + -- Daniel Leidert Thu, 06 Feb 2020 11:45:11 +0100 + +puma (3.12.4-1) unstable; urgency=medium + + * Team upload. + * New upstream release. + - Fixes CVE-2020-5247 (closes: #952766). + - Fixes CVE-2020-5249 (closes: #953122). + * d/control (Section): Changed to web. + (Homepage): Use secure URL. + (Depends): Add ${ruby:Depends}. + * d/copyright (Source): Use secure URL. + * d/ruby-tests.rake: Disable test/test_puma_server_ssl.rb for the moment. + These tests fail due to openssl being configured to use SECLEVEL2 + (https://github.com/puma/puma/issues/2147). + * d/rules: Add override to install upstream changelog. + * d/watch: Rename downloaded tarball to include package name. + * d/patches/0008-fix-ssl-tests.patch: Remove patch. Applied upstream. + * d/patches/CVE-2019-16770.patch: Ditto. + * d/patches/*.patch: Refresh patches. + * d/patches/series: Adjust. + + -- Daniel Leidert Wed, 04 Mar 2020 23:09:16 +0100 + +puma (3.12.0-4) unstable; urgency=medium + + * Team upload. + * d/control (Rules-Requires-Root): Set to binary-targets. + * d/patches/0011-disable-minitest-extensions.patch: Add patch. + - Disable unavailable minitest retry extension. + * d/patches/CVE-2019-16770.patch: Add patch. + - Backport fix for CVE-2019-16770 from upstream (closes: #946312). + * d/patches/series: Add patch. + + -- Daniel Leidert Thu, 06 Feb 2020 12:54:59 +0100 + +puma (3.12.0-3) unstable; urgency=medium + + * Team upload. + * d/compat: Remove obsolete file. + * d/control: Add Rules-Requires-Root field. + (Build-Depends): Use debhelper-compat. + (Standards-Version): Bump to 4.5.0. + (Depends): Drop ruby-interpreter. + * d/copyright (Format): Fix insecure-copyright-format-uri and add myself. + * d/puma.1, d/pumactl.1: Add manual pages. + * d/puma.manpages: Install manual pages. + * d/ruby-tests.rake: Set verbose mode. + * d/patches/0010-fix-cluster-exit-for-ruby27.patch: Add patch. + - Fix hang with Ruby >= 2.6 when shutting down workers. + * d/patches/series: Enable new patch. + * d/upstream/metadata: Add metadata. + * d/upstream/metadata: Add metadata. + + -- Daniel Leidert Wed, 05 Feb 2020 18:20:58 +0100 + +puma (3.12.0-2) unstable; urgency=medium + + * Disable tests failing in single cpu (Closes: #921931) + + -- Pirate Praveen Sun, 10 Feb 2019 18:56:47 +0530 + +puma (3.12.0-1) unstable; urgency=medium + + [ Balint Reczey ] + * New upstream version 3.12.0 + * Refresh patches + + [ Pirate Praveen ] + * Fix OpenSSL 1.1.1 test failures with upstream patch (Closes: #900156) + * Bump Standards-Version to 4.3.0 (no changes needed) + * Add myself to uploaders + + -- Pirate Praveen Sun, 10 Feb 2019 10:56:59 +0530 + +puma (3.11.3-1) unstable; urgency=medium + + * Team upload + * Remove myself from Uploaders: + * New upstream version 3.11.3 + * Build against libssl-dev instead of libssl1.0-dev (Closes: #859542) + * Refresh packaging files with `dh-make-ruby -wo .` + * Bump debhelper compat to 11 + * Change Vcs-* to point to salsa.debian.org + * Use standard debian/ruby-tests.rake + * drop build-dependency on ruby-hoe + * Refresh patches + * New patches: + - 0006-test-helper.rb-drop-bundler-usage.patch + - 0007-test-test_cli.rb-disable-test-that-fails-randomly.patch + * Replace 0001-test_puma_server_ssl-update-for-newer-versions-of-Op.patch + with 0001-test_puma_server_ssl-disable-test-that-takes-too-lon.patch + + + -- Antonio Terceiro Wed, 28 Mar 2018 18:53:22 -0300 + +puma (3.6.0-1) unstable; urgency=medium + + * Initial release (Closes: #720336) + + -- Antonio Terceiro Thu, 10 Nov 2016 16:47:06 -0200 diff --git a/clean b/clean new file mode 100644 index 0000000..4535125 --- /dev/null +++ b/clean @@ -0,0 +1 @@ +tmp/restart.txt diff --git a/control b/control new file mode 100644 index 0000000..84a0183 --- /dev/null +++ b/control @@ -0,0 +1,30 @@ +Source: puma +Section: web +Priority: optional +Maintainer: Debian Ruby Team +Uploaders: Pirate Praveen +Build-Depends: curl, + debhelper-compat (= 13), + gem2deb (>= 1.6), + libssl-dev, + rake, + ruby-localhost, + ruby-nio4r (>= 2), + ruby-rack (<< 3), + ruby-minitest-stub-const +Standards-Version: 4.6.1 +Vcs-Git: https://salsa.debian.org/ruby-team/puma.git +Vcs-Browser: https://salsa.debian.org/ruby-team/puma +Homepage: https://puma.io +Testsuite: autopkgtest-pkg-ruby +XS-Ruby-Versions: all +Rules-Requires-Root: binary-targets + +Package: puma +Architecture: any +XB-Ruby-Versions: ${ruby:Versions} +Depends: ruby, ${misc:Depends}, ${ruby:Depends}, ${shlibs:Depends} +Description: threaded HTTP 1.1 server for Ruby/Rack applications + Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server for + Ruby/Rack applications. Puma is intended for use in both development and + production environments. diff --git a/copyright b/copyright new file mode 100644 index 0000000..32ce732 --- /dev/null +++ b/copyright @@ -0,0 +1,41 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: puma +Upstream-Contact: https://github.com/puma/puma/issues +Source: https://github.com/puma/puma + +Files: * +Copyright: 2005, Zed Shaw + 2011, Evan Phoenix +License: BSD-3-clause + +Files: debian/* +Copyright: 2016 Antonio Terceiro + 2020 Daniel Leidert +License: BSD-3-clause +Comment: The Debian packaging is licensed under the same terms as the source. + +License: BSD-3-clause + All rights reserved. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Evan Phoenix nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/gbp.conf b/gbp.conf new file mode 100644 index 0000000..51fd1ac --- /dev/null +++ b/gbp.conf @@ -0,0 +1,3 @@ +[DEFAULT] +pristine-tar = true +verbose = true diff --git a/patches/0004-puma.gemspec-drop-git-usage.patch b/patches/0004-puma.gemspec-drop-git-usage.patch new file mode 100644 index 0000000..d5f0d7c --- /dev/null +++ b/patches/0004-puma.gemspec-drop-git-usage.patch @@ -0,0 +1,21 @@ +From: Antonio Terceiro +Date: Wed, 5 Feb 2020 21:36:05 +0100 +Subject: Drop git usage from gemspec + +Forwarded: not-needed +--- + puma.gemspec | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/puma.gemspec ++++ b/puma.gemspec +@@ -13,8 +13,7 @@ + if RbConfig::CONFIG['ruby_version'] >= '2.5' + s.metadata["msys2_mingw_dependencies"] = "openssl" + end +- s.files = `git ls-files -- bin docs ext lib tools`.split("\n") + +- %w[History.md LICENSE README.md] ++ s.files = Dir.glob('**/*').reject { |f| f =~ /^debian\//} + s.homepage = "https://puma.io" + + if s.respond_to?(:metadata=) diff --git a/patches/0011-disable-minitest-extensions.patch b/patches/0011-disable-minitest-extensions.patch new file mode 100644 index 0000000..6548af7 --- /dev/null +++ b/patches/0011-disable-minitest-extensions.patch @@ -0,0 +1,39 @@ +From: Daniel Leidert +Date: Wed, 5 Feb 2020 22:20:42 +0100 +Subject: Disable unavailable minitest extensions + +Forwarded: not-needed +--- + test/helper.rb | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/test/helper.rb ++++ b/test/helper.rb +@@ -14,7 +14,6 @@ + require_relative "minitest/verbose" + require "minitest/autorun" + require "minitest/pride" +-require "minitest/proveit" + require "minitest/stub_const" + require "net/http" + require_relative "helpers/apps" +@@ -102,10 +101,6 @@ + end + + Minitest::Test.prepend TimeoutEveryTestCase +-if ENV['CI'] +- require 'minitest/retry' +- Minitest::Retry.use! +-end + + module TestSkips + +@@ -178,7 +173,7 @@ + REPO_NAME = ENV['GITHUB_REPOSITORY'] ? ENV['GITHUB_REPOSITORY'][/[^\/]+\z/] : 'puma' + + def self.run(reporter, options = {}) # :nodoc: +- prove_it! ++ #prove_it! + super + end + diff --git a/patches/0012-disable-cli-ssl-tests.patch b/patches/0012-disable-cli-ssl-tests.patch new file mode 100644 index 0000000..1be1cd9 --- /dev/null +++ b/patches/0012-disable-cli-ssl-tests.patch @@ -0,0 +1,21 @@ +From: Daniel Leidert +Date: Wed, 5 Feb 2020 23:18:37 +0100 +Subject: Disable cli ssl tests + +Forwarded: not-needed +--- + test/test_cli.rb | 2 +- + test/test_pumactl.rb | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/test/test_pumactl.rb ++++ b/test/test_pumactl.rb +@@ -223,7 +223,7 @@ + refute_includes log, 'send_request' + end + +- def test_control_ssl ++ def __test_control_ssl + skip_unless :ssl + + host = "127.0.0.1" diff --git a/patches/0013-fix-test-term-not-accepts-new-connections.patch b/patches/0013-fix-test-term-not-accepts-new-connections.patch new file mode 100644 index 0000000..9dae6b6 --- /dev/null +++ b/patches/0013-fix-test-term-not-accepts-new-connections.patch @@ -0,0 +1,20 @@ +From: Daniel Leidert +Date: Thu, 6 Feb 2020 11:24:24 +0100 +Subject: Fix test to read output locale independent + +The test fails if run in a non-English environment. +--- + test/test_integration_single.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/test/test_integration_single.rb ++++ b/test/test_integration_single.rb +@@ -76,7 +76,7 @@ + true while @server.gets !~ /Gracefully stopping/ # wait for server to begin graceful shutdown + + # Invoke a request which must be rejected +- _stdin, _stdout, rejected_curl_stderr, rejected_curl_wait_thread = Open3.popen3("curl #{HOST}:#{@tcp_port}") ++ _stdin, _stdout, rejected_curl_stderr, rejected_curl_wait_thread = Open3.popen3({ "LC_ALL" => "C" }, "curl http://#{HOST}:#{@tcp_port}") + + assert nil != Process.getpgid(@server.pid) # ensure server is still running + assert nil != Process.getpgid(curl_wait_thread[:pid]) # ensure first curl invocation still in progress diff --git a/patches/0014-disable-test-failing-on-amd64.patch b/patches/0014-disable-test-failing-on-amd64.patch new file mode 100644 index 0000000..196e878 --- /dev/null +++ b/patches/0014-disable-test-failing-on-amd64.patch @@ -0,0 +1,14 @@ +This test failed on amd64 buildd +https://buildd.debian.org/status/fetch.php?pkg=puma&arch=amd64&ver=5.2.2-1&stamp=1615133735&raw=0 + +--- a/test/test_puma_server.rb ++++ b/test/test_puma_server.rb +@@ -1294,7 +1294,7 @@ + end + end + +- def test_command_ignored_before_run ++ def __test_command_ignored_before_run + @server.stop # ignored + @server.run + @server.halt diff --git a/patches/CVE-2023-40175.patch b/patches/CVE-2023-40175.patch new file mode 100644 index 0000000..be9cff8 --- /dev/null +++ b/patches/CVE-2023-40175.patch @@ -0,0 +1,143 @@ +From 7405a219801dcebc0ad6e0aa108d4319ca23f662 Mon Sep 17 00:00:00 2001 +From: Nate Berkopec +Date: Fri, 18 Aug 2023 09:47:23 +0900 +Subject: [PATCH] Merge pull request from GHSA-68xg-gqqm-vgj8 + +* Reject empty string for Content-Length + +* Ignore trailers in last chunk + +* test_puma_server.rb - use heredoc, test_cl_and_te_smuggle + +* client.rb - stye/RubyCop + +* test_puma_server.rb - indented heredoc rubocop disable + +* Dentarg comments + +* Remove unused variable + +--------- + +Co-authored-by: MSP-Greg +--- + lib/puma/client.rb | 23 ++++++++++++++-------- + test/test_puma_server.rb | 42 +++++++++++++++++++++++++++++++++++++++- + 2 files changed, 56 insertions(+), 9 deletions(-) + +diff --git a/lib/puma/client.rb b/lib/puma/client.rb +index e966f995e8..9c11912caa 100644 +--- a/lib/puma/client.rb ++++ b/lib/puma/client.rb +@@ -45,7 +45,8 @@ class Client + + # chunked body validation + CHUNK_SIZE_INVALID = /[^\h]/.freeze +- CHUNK_VALID_ENDING = "\r\n".freeze ++ CHUNK_VALID_ENDING = Const::LINE_END ++ CHUNK_VALID_ENDING_SIZE = CHUNK_VALID_ENDING.bytesize + + # Content-Length header value validation + CONTENT_LENGTH_VALUE_INVALID = /[^\d]/.freeze +@@ -347,8 +348,8 @@ def setup_body + cl = @env[CONTENT_LENGTH] + + if cl +- # cannot contain characters that are not \d +- if cl =~ CONTENT_LENGTH_VALUE_INVALID ++ # cannot contain characters that are not \d, or be empty ++ if cl =~ CONTENT_LENGTH_VALUE_INVALID || cl.empty? + raise HttpParserError, "Invalid Content-Length: #{cl.inspect}" + end + else +@@ -509,7 +510,7 @@ def decode_chunk(chunk) + + while !io.eof? + line = io.gets +- if line.end_with?("\r\n") ++ if line.end_with?(CHUNK_VALID_ENDING) + # Puma doesn't process chunk extensions, but should parse if they're + # present, which is the reason for the semicolon regex + chunk_hex = line.strip[/\A[^;]+/] +@@ -521,13 +522,19 @@ def decode_chunk(chunk) + @in_last_chunk = true + @body.rewind + rest = io.read +- last_crlf_size = "\r\n".bytesize +- if rest.bytesize < last_crlf_size ++ if rest.bytesize < CHUNK_VALID_ENDING_SIZE + @buffer = nil +- @partial_part_left = last_crlf_size - rest.bytesize ++ @partial_part_left = CHUNK_VALID_ENDING_SIZE - rest.bytesize + return false + else +- @buffer = rest[last_crlf_size..-1] ++ # if the next character is a CRLF, set buffer to everything after that CRLF ++ start_of_rest = if rest.start_with?(CHUNK_VALID_ENDING) ++ CHUNK_VALID_ENDING_SIZE ++ else # we have started a trailer section, which we do not support. skip it! ++ rest.index(CHUNK_VALID_ENDING*2) + CHUNK_VALID_ENDING_SIZE*2 ++ end ++ ++ @buffer = rest[start_of_rest..-1] + @buffer = nil if @buffer.empty? + set_ready + return true +diff --git a/test/test_puma_server.rb b/test/test_puma_server.rb +index 298e44b439..2bfaf98848 100644 +--- a/test/test_puma_server.rb ++++ b/test/test_puma_server.rb +@@ -627,7 +627,7 @@ def test_large_chunked_request + [200, {}, [""]] + } + +- header = "GET / HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\n" ++ header = "GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: 200\r\nTransfer-Encoding: chunked\r\n\r\n" + + chunk_header_size = 6 # 4fb8\r\n + # Current implementation reads one chunk of CHUNK_SIZE, then more chunks of size 4096. +@@ -1365,4 +1365,44 @@ def test_rack_url_scheme_user + data = send_http_and_read "GET / HTTP/1.0\r\n\r\n" + assert_equal "user", data.split("\r\n").last + end ++ ++ def test_cl_empty_string ++ server_run do |env| ++ [200, {}, [""]] ++ end ++ ++ empty_cl_request = "GET / HTTP/1.1\r\nHost: localhost\r\nContent-Length:\r\n\r\nGET / HTTP/1.1\r\nHost: localhost\r\n\r\n" ++ ++ data = send_http_and_read empty_cl_request ++ assert_operator data, :start_with?, 'HTTP/1.1 400 Bad Request' ++ end ++ ++ def test_crlf_trailer_smuggle ++ server_run do |env| ++ [200, {}, [""]] ++ end ++ ++ smuggled_payload = "GET / HTTP/1.1\r\nTransfer-Encoding: chunked\r\nHost: whatever\r\n\r\n0\r\nX:POST / HTTP/1.1\r\nHost: whatever\r\n\r\nGET / HTTP/1.1\r\nHost: whatever\r\n\r\n" ++ ++ data = send_http_and_read smuggled_payload ++ assert_equal 2, data.scan("HTTP/1.1 200 OK").size ++ end ++ ++ # test to check if content-length is ignored when 'transfer-encoding: chunked' ++ # is used. See also test_large_chunked_request ++ def test_cl_and_te_smuggle ++ body = nil ++ server_run { |env| ++ body = env['rack.input'].read ++ [200, {}, [""]] ++ } ++ ++ req = "POST /search HTTP/1.1\r\nHost: vulnerable-website.com\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 4\r\nTransfer-Encoding: chunked\r\n\r\n7b\r\nGET /404 HTTP/1.1\r\nHost: vulnerable-website.com\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 144\r\n\r\nx=\r\n0\r\n\r\n" ++ ++ data = send_http_and_read req ++ ++ assert_includes body, "GET /404 HTTP/1.1\r\n" ++ assert_includes body, "Content-Length: 144\r\n" ++ assert_equal 1, data.scan("HTTP/1.1 200 OK").size ++ end + end diff --git a/patches/CVE-2024-21647.patch b/patches/CVE-2024-21647.patch new file mode 100644 index 0000000..47e523e --- /dev/null +++ b/patches/CVE-2024-21647.patch @@ -0,0 +1,93 @@ +From bbb880ffb6debbfdea535b4b3eb2204d49ae151d Mon Sep 17 00:00:00 2001 +From: Nate Berkopec +Date: Mon, 8 Jan 2024 14:48:43 +0900 +Subject: [PATCH] Merge pull request from GHSA-c2f4-cvqm-65w2 + +Co-authored-by: MSP-Greg +Co-authored-by: Patrik Ragnarsson +Co-authored-by: Evan Phoenix +--- + lib/puma/client.rb | 27 +++++++++++++++++++++++++++ + test/test_puma_server.rb | 14 ++++++++++++++ + 2 files changed, 41 insertions(+) + +--- a/lib/puma/client.rb ++++ b/lib/puma/client.rb +@@ -48,6 +48,14 @@ module Puma + CHUNK_VALID_ENDING = Const::LINE_END + CHUNK_VALID_ENDING_SIZE = CHUNK_VALID_ENDING.bytesize + ++ # The maximum number of bytes we'll buffer looking for a valid ++ # chunk header. ++ MAX_CHUNK_HEADER_SIZE = 4096 ++ ++ # The maximum amount of excess data the client sends ++ # using chunk size extensions before we abort the connection. ++ MAX_CHUNK_EXCESS = 16 * 1024 ++ + # Content-Length header value validation + CONTENT_LENGTH_VALUE_INVALID = /[^\d]/.freeze + +@@ -460,6 +468,7 @@ module Puma + @chunked_body = true + @partial_part_left = 0 + @prev_chunk = "" ++ @excess_cr = 0 + + @body = Tempfile.new(Const::PUMA_TMP_BASE) + @body.unlink +@@ -541,6 +550,20 @@ module Puma + end + end + ++ # Track the excess as a function of the size of the ++ # header vs the size of the actual data. Excess can ++ # go negative (and is expected to) when the body is ++ # significant. ++ # The additional of chunk_hex.size and 2 compensates ++ # for a client sending 1 byte in a chunked body over ++ # a long period of time, making sure that that client ++ # isn't accidentally eventually punished. ++ @excess_cr += (line.size - len - chunk_hex.size - 2) ++ ++ if @excess_cr >= MAX_CHUNK_EXCESS ++ raise HttpParserError, "Maximum chunk excess detected" ++ end ++ + len += 2 + + part = io.read(len) +@@ -568,6 +591,10 @@ module Puma + @partial_part_left = len - part.size + end + else ++ if @prev_chunk.size + chunk.size >= MAX_CHUNK_HEADER_SIZE ++ raise HttpParserError, "maximum size of chunk header exceeded" ++ end ++ + @prev_chunk = line + return false + end +--- a/test/test_puma_server.rb ++++ b/test/test_puma_server.rb +@@ -648,6 +648,20 @@ EOF + end + end + ++ def test_large_chunked_request_header ++ server_run(environment: :production) { |env| ++ [200, {}, [""]] ++ } ++ ++ max_chunk_header_size = Puma::Client::MAX_CHUNK_HEADER_SIZE ++ header = "GET / HTTP/1.1\r\nConnection: close\r\nContent-Length: 200\r\nTransfer-Encoding: chunked\r\n\r\n" ++ socket = send_http "#{header}1;t#{'x' * (max_chunk_header_size + 2)}" ++ ++ data = socket.read ++ ++ assert_match "HTTP/1.1 400 Bad Request\r\n\r\n", data ++ end ++ + def test_chunked_request_pause_before_value + body = nil + content_length = nil diff --git a/patches/CVE-2024-45614.patch b/patches/CVE-2024-45614.patch new file mode 100644 index 0000000..b15eb82 --- /dev/null +++ b/patches/CVE-2024-45614.patch @@ -0,0 +1,195 @@ +From cac3fd18cf29ed43719ff5d52d9cfec215f0a043 Mon Sep 17 00:00:00 2001 +From: Evan Phoenix +Date: Wed, 18 Sep 2024 21:56:07 -0700 +Subject: [PATCH] Merge commit from fork + +* Prevent underscores from clobbering hyphen headers + +* Special case encoding headers to prevent app confusion + +* Handle _ as , in jruby as well + +* Silence RuboCop offense + +--------- + +Co-authored-by: Patrik Ragnarsson +--- + ext/puma_http11/org/jruby/puma/Http11.java | 2 + + lib/puma/const.rb | 8 +++ + lib/puma/request.rb | 19 ++++++-- + test/test_normalize.rb | 57 ++++++++++++++++++++++ + test/test_request_invalid.rb | 28 +++++++++++ + 5 files changed, 111 insertions(+), 3 deletions(-) + create mode 100644 test/test_normalize.rb + +--- a/ext/puma_http11/org/jruby/puma/Http11.java ++++ b/ext/puma_http11/org/jruby/puma/Http11.java +@@ -99,6 +99,8 @@ public class Http11 extends RubyObject { + int bite = b.get(i) & 0xFF; + if(bite == '-') { + b.set(i, (byte)'_'); ++ } else if(bite == '_') { ++ b.set(i, (byte)','); + } else { + b.set(i, (byte)Character.toUpperCase(bite)); + } +--- a/lib/puma/const.rb ++++ b/lib/puma/const.rb +@@ -244,6 +244,14 @@ module Puma + # header values can contain HTAB? + ILLEGAL_HEADER_VALUE_REGEX = /[\x00-\x08\x0A-\x1F]/.freeze + ++ # The keys of headers that should not be convert to underscore ++ # normalized versions. These headers are ignored at the request reading layer, ++ # but if we normalize them after reading, it's just confusing for the application. ++ UNMASKABLE_HEADERS = { ++ "HTTP_TRANSFER,ENCODING" => true, ++ "HTTP_CONTENT,LENGTH" => true, ++ } ++ + # Banned keys of response header + BANNED_HEADER_KEY = /\A(rack\.|status\z)/.freeze + +--- a/lib/puma/request.rb ++++ b/lib/puma/request.rb +@@ -318,6 +318,11 @@ module Puma + # compatibility, we'll convert them back. This code is written to + # avoid allocation in the common case (ie there are no headers + # with `,` in their names), that's why it has the extra conditionals. ++ # ++ # @note If a normalized version of a `,` header already exists, we ignore ++ # the `,` version. This prevents clobbering headers managed by proxies ++ # but not by clients (Like X-Forwarded-For). ++ # + # @param env [Hash] see Puma::Client#env, from request, modifies in place + # @version 5.0.3 + # +@@ -326,23 +331,30 @@ module Puma + to_add = nil + + env.each do |k,v| +- if k.start_with?("HTTP_") and k.include?(",") and k != "HTTP_TRANSFER,ENCODING" ++ if k.start_with?("HTTP_") and k.include?(",") and !UNMASKABLE_HEADERS.key?(k) + if to_delete + to_delete << k + else + to_delete = [k] + end + ++ new_k = k.tr(",", "_") ++ if env.key?(new_k) ++ next ++ end ++ + unless to_add + to_add = {} + end + +- to_add[k.tr(",", "_")] = v ++ to_add[new_k] = v + end + end + + if to_delete + to_delete.each { |k| env.delete(k) } ++ end ++ if to_add + env.merge! to_add + end + end +--- /dev/null ++++ b/test/test_normalize.rb +@@ -0,0 +1,57 @@ ++# frozen_string_literal: true ++ ++require_relative "helper" ++ ++require "puma/request" ++ ++class TestNormalize < Minitest::Test ++ parallelize_me! ++ ++ include Puma::Request ++ ++ def test_comma_headers ++ env = { ++ "HTTP_X_FORWARDED_FOR" => "1.1.1.1", ++ "HTTP_X_FORWARDED,FOR" => "2.2.2.2", ++ } ++ ++ req_env_post_parse env ++ ++ expected = { ++ "HTTP_X_FORWARDED_FOR" => "1.1.1.1", ++ } ++ ++ assert_equal expected, env ++ ++ # Test that the iteration order doesn't matter ++ ++ env = { ++ "HTTP_X_FORWARDED,FOR" => "2.2.2.2", ++ "HTTP_X_FORWARDED_FOR" => "1.1.1.1", ++ } ++ ++ req_env_post_parse env ++ ++ expected = { ++ "HTTP_X_FORWARDED_FOR" => "1.1.1.1", ++ } ++ ++ assert_equal expected, env ++ end ++ ++ def test_unmaskable_headers ++ env = { ++ "HTTP_CONTENT,LENGTH" => "100000", ++ "HTTP_TRANSFER,ENCODING" => "chunky" ++ } ++ ++ req_env_post_parse env ++ ++ expected = { ++ "HTTP_CONTENT,LENGTH" => "100000", ++ "HTTP_TRANSFER,ENCODING" => "chunky" ++ } ++ ++ assert_equal expected, env ++ end ++end +--- a/test/test_request_invalid.rb ++++ b/test/test_request_invalid.rb +@@ -216,4 +216,32 @@ class TestRequestInvalid < Minitest::Tes + + assert_status data + end ++ ++ def test_underscore_header_1 ++ hdrs = [ ++ "X-FORWARDED-FOR: 1.1.1.1", # proper ++ "X-FORWARDED-FOR: 2.2.2.2", # proper ++ "X_FORWARDED-FOR: 3.3.3.3", # invalid, contains underscore ++ "Content-Length: 5", ++ ].join "\r\n" ++ ++ response = send_http_and_read "#{GET_PREFIX}#{hdrs}\r\n\r\nHello\r\n\r\n" ++ ++ assert_includes response, "HTTP_X_FORWARDED_FOR = 1.1.1.1, 2.2.2.2" ++ refute_includes response, "3.3.3.3" ++ end ++ ++ def test_underscore_header_2 ++ hdrs = [ ++ "X_FORWARDED-FOR: 3.3.3.3", # invalid, contains underscore ++ "X-FORWARDED-FOR: 2.2.2.2", # proper ++ "X-FORWARDED-FOR: 1.1.1.1", # proper ++ "Content-Length: 5", ++ ].join "\r\n" ++ ++ response = send_http_and_read "#{GET_PREFIX}#{hdrs}\r\n\r\nHello\r\n\r\n" ++ ++ assert_includes response, "HTTP_X_FORWARDED_FOR = 2.2.2.2, 1.1.1.1" ++ refute_includes response, "3.3.3.3" ++ end + end diff --git a/patches/CVE-2026-47736_37.patch b/patches/CVE-2026-47736_37.patch new file mode 100644 index 0000000..b98ff9f --- /dev/null +++ b/patches/CVE-2026-47736_37.patch @@ -0,0 +1,165 @@ +From ebe9db3929ab8299d19c8f5b41e8ef4f4b22fa58 Mon Sep 17 00:00:00 2001 +From: Nate Berkopec +Date: Wed, 27 May 2026 08:33:21 +0900 +Subject: [PATCH] 7.2.1 backport (#3947) + +* Limit and anchor PROXY protocol parsing + +(cherry picked from commit f1f37d5822aa8ffe23e7d0d16e9a1f3b0eaf9bfd) + +* Parse PROXY protocol only once per connection + +(cherry picked from commit 8310c17cd43784723ed41a94d2a747da256306de) +--- + lib/puma/client.rb | 38 ++++++++++++++------- + lib/puma/const.rb | 3 +- + test/test_puma_server.rb | 71 ++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 100 insertions(+), 12 deletions(-) + +--- a/lib/puma/client.rb ++++ b/lib/puma/client.rb +@@ -148,7 +148,7 @@ module Puma + def reset(fast_check=true) + @parser.reset + @read_header = true +- @read_proxy = !!@expect_proxy_proto ++ @read_proxy = !!@expect_proxy_proto && @requests_served.zero? + @env = @proto_env.dup + @body = nil + @tempfile = nil +@@ -196,20 +196,36 @@ module Puma + def try_to_parse_proxy_protocol + if @read_proxy + if @expect_proxy_proto == :v1 +- if @buffer.include? "\r\n" +- if md = PROXY_PROTOCOL_V1_REGEX.match(@buffer) +- if md[1] +- @peerip = md[1].split(" ")[0] ++ crlf_index = @buffer.index "\r\n" ++ ++ unless crlf_index ++ if "PROXY ".start_with? @buffer ++ return false ++ elsif @buffer.start_with? "PROXY " ++ if @buffer.bytesize >= PROXY_PROTOCOL_V1_MAX_LENGTH ++ raise ConnectionError, "PROXY protocol v1 line is too long" + end +- @buffer = md.post_match ++ return false + end +- # if the buffer has a \r\n but doesn't have a PROXY protocol +- # request, this is just HTTP from a non-PROXY client; move on ++ + @read_proxy = false +- return @buffer.size > 0 +- else +- return false ++ return true ++ end ++ ++ if @buffer.start_with?("PROXY ") && crlf_index + 2 > PROXY_PROTOCOL_V1_MAX_LENGTH ++ raise ConnectionError, "PROXY protocol v1 line is too long" ++ end ++ ++ if md = PROXY_PROTOCOL_V1_REGEX.match(@buffer) ++ if md[1] ++ @peerip = md[1].split(" ")[0] ++ end ++ @buffer = md.post_match + end ++ # if the buffer has a \r\n but doesn't have a PROXY protocol ++ # request, this is just HTTP from a non-PROXY client; move on ++ @read_proxy = false ++ return @buffer.size > 0 + end + end + true +--- a/lib/puma/const.rb ++++ b/lib/puma/const.rb +@@ -255,6 +255,7 @@ module Puma + # Banned keys of response header + BANNED_HEADER_KEY = /\A(rack\.|status\z)/.freeze + +- PROXY_PROTOCOL_V1_REGEX = /^PROXY (?:TCP4|TCP6|UNKNOWN) ([^\r]+)\r\n/.freeze ++ PROXY_PROTOCOL_V1_REGEX = /\APROXY (?:TCP4|TCP6|UNKNOWN) ([^\r]+)\r\n/.freeze ++ PROXY_PROTOCOL_V1_MAX_LENGTH = 107 + end + end +--- a/test/test_puma_server.rb ++++ b/test/test_puma_server.rb +@@ -1065,6 +1065,75 @@ EOF + assert_equal 'fd00::1', remote_addr + end + ++ def test_proxy_protocol_rejects_line_without_crlf_at_max_length ++ server_run(remote_address: :proxy_protocol, remote_address_proxy_protocol: :v1) do ++ [200, {}, ["Hello"]] ++ end ++ ++ socket = new_connection ++ socket << "PROXY #{'A' * (Puma::Const::PROXY_PROTOCOL_V1_MAX_LENGTH - "PROXY ".bytesize)}" ++ ++ assert_equal "", socket.read ++ end ++ ++ def test_proxy_protocol_allows_non_proxy_requests_over_max_length ++ server_run(remote_address: :proxy_protocol, remote_address_proxy_protocol: :v1) do ++ [200, {}, ["Hello"]] ++ end ++ ++ response = send_http_and_read( "GET /#{'a' * Puma::Const::PROXY_PROTOCOL_V1_MAX_LENGTH} HTTP/1.0\r\n\r\n") ++ ++ assert_match %r{\AHTTP/1\.[01] 200 OK}, response ++ assert_match %r{Hello\z}, response ++ end ++ ++ def test_proxy_protocol_ignores_embedded_proxy_line_in_http_body ++ server_run(remote_address: :proxy_protocol, remote_address_proxy_protocol: :v1) do |env| ++ body = env['rack.input'].read ++ [200, {'Content-Length' => body.bytesize.to_s}, [body]] ++ end ++ ++ body = "prefix\nPROXY TCP4 1.1.1.1 2.2.2.2 3 4\r\nsuffix" ++ response = send_http_and_read ("POST / HTTP/1.1\r\nHost: test.com\r\nContent-Length: #{body.bytesize}\r\n\r\n#{body}") ++ ++ assert_match %r{\AHTTP/1\.[01] 200 OK}, response ++ assert_match %r{#{Regexp.escape(body)}\z}, response ++ end ++ ++ def test_proxy_protocol_only_parses_first_request_on_connection ++ server_run(remote_address: :proxy_protocol, remote_address_proxy_protocol: :v1) do |env| ++ [200, {}, [env["REMOTE_ADDR"]]] ++ end ++ ++ socket = send_proxy_v1_http("GET /one HTTP/1.1\r\nHost: test.com\r\n\r\n", "1.2.3.4") ++ ++ assert_equal ["HTTP/1.1 200 OK", "Content-Length: 7"], header(socket) ++ assert_equal "1.2.3.4", socket.read(7) ++ ++ sleep 1 ++ ++ socket << "PROXY TCP4 127.0.0.1 127.0.0.1 10000 80\r\nGET /two HTTP/1.1\r\nHost: test.com\r\nConnection: close\r\n\r\n" ++ ++ assert_match %r{\AHTTP/1\.[01] 400 Bad Request}, socket.read ++ end ++ ++ def test_proxy_protocol_allows_proxy_http_method_on_keep_alive ++ server_run(remote_address: :proxy_protocol, remote_address_proxy_protocol: :v1, supported_http_methods: :any) do |env| ++ [200, {}, [env["REMOTE_ADDR"]]] ++ end ++ ++ socket = send_proxy_v1_http("GET /one HTTP/1.1\r\nHost: test.com\r\n\r\n", "1.2.3.4") ++ ++ assert_equal ["HTTP/1.1 200 OK", "Content-Length: 7"], header(socket) ++ assert_equal "1.2.3.4", socket.read(7) ++ ++ socket << "PROXY /two HTTP/1.1\r\nHost: test.com\r\nConnection: close\r\n\r\n" ++ ++ response = socket.read ++ assert_match %r{\AHTTP/1\.1 200 OK\r\n}, response ++ assert_equal "1.2.3.4", response.split("\r\n").last ++ end ++ + # To comply with the Rack spec, we have to split header field values + # containing newlines into multiple headers. + def assert_does_not_allow_http_injection(app, opts = {}) diff --git a/patches/new-certs-generated.patch b/patches/new-certs-generated.patch new file mode 100644 index 0000000..78c2793 --- /dev/null +++ b/patches/new-certs-generated.patch @@ -0,0 +1,649 @@ +Description: ssl certs for testcases +Author: Abhijith PA +Forwarded: not-needed +Last-Update: 2026-10-07 + +--- puma-5.6.5.orig/examples/puma/cert_puma.pem ++++ puma-5.6.5/examples/puma/cert_puma.pem +@@ -1,21 +1,21 @@ + -----BEGIN CERTIFICATE----- + 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 + -----END CERTIFICATE----- +--- puma-5.6.5.orig/examples/puma/client-certs/ca.crt ++++ puma-5.6.5/examples/puma/client-certs/ca.crt +@@ -1,19 +1,19 @@ + -----BEGIN CERTIFICATE----- + MIIDDjCCAfagAwIBAgIBAzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB +-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjAw +-ODAxMDAwMDAwWhcNMjQwODAxMDAwMDAwWjA4MRMwEQYKCZImiZPyLGQBGRYDbmV0 ++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjYx ++MDAxMDAwMDAwWhcNMzAxMDAxMDAwMDAwWjA4MRMwEQYKCZImiZPyLGQBGRYDbmV0 + MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwggEiMA0GCSqGSIb3 +-DQEBAQUAA4IBDwAwggEKAoIBAQDIHxrFcS2JkRQbXLFosb32unVkVuwHSPSt6Dpl +-2jUQHP/bceAx/d9waHYf8rlbCFAIoduZDOc7XCJUidgcG5NfLJyQpkkWOU8CGWH+ +-Ipl4AE8auYCcy/0T7BQqaRC41HPmrJG1CC40rqcY47lUO2haI+vj5TZFHNhAbRat +-rR1iD1veis2gBZtrMzd4IlpvEHGv6ghfnSc20za4exmapjp/uAAIOXpeFX8QHumA +-bty4dd+iHpKjDzUrhG9Qa5v28ii2K1AcbczUQ7FzSp2/GoRSjF+WY6i86N9Z1M97 +-2PEgy0IG5l6JHu1P0/rd00hN0h0Owzv3V5ldMLZap7+pVFQTAgMBAAGjIzAhMA8G ++DQEBAQUAA4IBDwAwggEKAoIBAQC1P8p5V+jPPJOVDlCQmaGkVe9i3uJpuZxBdvyT ++71O/8uMuosJN1lq1s5dL2/eh+9rjjMHQrO/RuB3VCkWRNsbNq8bHDOPIIXiVOAPK ++2tLI+58OFX904+uf+3ySGLMwQDPR52ov/ArCx28a/L5hg4tf/boXBdeOtfZvuCp0 ++GvdI0LYNeR26M28FsUFmH7PsbLRnNbq6hynayrMCipYQkavM2FuKPDtIg5OYFlHG ++4bamXTRG+VmH6qdTY825al8+04Uuom9kx6Fg1Ee/+mD5lqXlKo/BxO6UhRiZwrTf ++l/EBicxdc2aLyY5zVAtDY6VVDOTHj3oZkjwWgV0ytcpi8f63AgMBAAGjIzAhMA8G + A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IB +-AQA3GWpy4bYLOHLENDTUBeclF6cDdYiautD6gxd1SDLMWOhAUF7ywwT87OAJdr1I +-+W1TUv5BRG21rNm1QsZfLbStdKA1mpiET/9nYN7m1YauL5hI3yD49TGuO9/sxcE5 +-zNW7D3VBVNq+pyT21/TvLAgxCNvjjm7byzyIOcoRUyZx8WhCf8nUT6cEShXqEg4Q +-iUBSLI38tiQoZneuVzDRlXBY0PqoB19l2Kg9yThHjPTVhw5EAQSDKXCCvaxAbVw6 +-ZPLNnOdK6DvqEZ3GC5WlaHQdmLxmN4OfV6AEtpgqgGY9u8K1ylTr3ET7xLK7bhcA +-oZsggEVZr1Ifx9BWIazRNwlw ++AQB3E+f+miY+Fu4IOoXe9b2/mP+S0IzvGTXEtKnOG3n24B1SLGMSr1HcyUySI8n/ ++qwwONSUfL8kGWintY8gTAlHhVjdW8gTLXVGMV9aYexxcojycta4MqM60uRMunBD3 ++CGjP45pd76sJsJ0paZMrdqjjMYYPHxI8sau3VQbKZ96DeTWvrEOGm6xQtQ5qbFQy ++ZjEFZmy72N/Occ421IprCGOkuuV24q9sgWssOHF6/nbRdsJMXlxGtCXSq8YM5SEn ++3YReyODq2foayZOmOR1VTR4JMJnlB9b36WbjkTz8jQGcHqKqzwXUEFgdywOxZaZ3 ++saaKCW4MbsGrqXEAck5iK35K + -----END CERTIFICATE----- +--- puma-5.6.5.orig/examples/puma/client-certs/ca.key ++++ puma-5.6.5/examples/puma/client-certs/ca.key +@@ -1,27 +1,27 @@ + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +--- puma-5.6.5.orig/examples/puma/client-certs/client.crt ++++ puma-5.6.5/examples/puma/client-certs/client.crt +@@ -1,19 +1,19 @@ + -----BEGIN CERTIFICATE----- + MIIDBDCCAeygAwIBAgIBCzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB +-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjAw +-ODAxMDAwMDAwWhcNMjQwODAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0 ++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjYx ++MDAxMDAwMDAwWhcNMzAxMDAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0 + MRQwEgYKCZImiZPyLGQBGRYEcHVtYTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN +-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoywLJRT7wZM1P3Abg9NIT+NJ8TkS +-IBz8ZgyyhSW1lU/tcsNEJakIl22XAeLEHfMknMzDqvU1G256hqM+/Tgohreat+yc +-ofy+2OOu4un+44qIGX82i2PCt+afVvbGhPpHioyAJRDXZd9V4FtESH+6As7m+6MH +-E4yX547E6XmmJ9lp8z9FnBMi1a6C01bI6mZhMuReLl2bS0FWjqrwNN3PpizBD+Vv +-FbUIndC+UiD0kYPxTwSDCpEq/To0FrNCdAj94Y4oZVuvx8B1mHiqwkqmlOLUZslS +-u7CFInqbswq5LnGFRIVSg3bu4bgCbCEmJhfqxp5MODT4VBXa2sCOnG7BBwIDAQAB +-oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAApaKvnGiRqs +-Vz4B06f/mDLmN7gb0e/evEypB2S06fp9f/oWWHXHCxpx9bKbiHFNNiinoc97/Spb +-GzylHV/n9j8GEtZmJMiSJZubN8vpn1Jg0Usz3ZtAy0fe9ephjBIXPpwrsGF6Oz3u +-U/b2zTpJX3oJ3Eq6Q9hLplYU3bNHfrw6PAbzbB91zVTFsqZUTctKrMRgp68FA4fw +-VWQkb4QwLK1UVJIT/nR3v7nJDktgpR4mfdrtWbWxOGm/ed2oOilpqVhVN99P+bUn +-3cFkQ6PSYK8En9jJhBMe/zQqpSyy09Tfi/Zy6nzZv0ah53bpeCFLZFi+0CU8HwPr +-MuD1XQN72zg= ++BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlfZAk/6RuOY5RI4uzGfTNTr4AVpO ++2Xqw1HVOZcojQmUqUBKxIkmk75Rlbh4HO7ORnfXDUYTogVEcgbOtPDN3PNkBgA/J ++lelbJl7gklNDYs3aK70KFKe5YVgONPUuzg9jwpwK/K+iCOCh2ynXq/QAzJk7K7ad ++fdAQGtiHnGKWO085jmOPIuPmjcf393VUKnhC2B+dsThalii2OjKI95vhxVohqyPk ++MGk7EquEwQE1yKG0+WUw6qJ8KigQeiN0rKX8F4Zw582e1j2K7zQqWOJu1YD0UVch ++Q8YQRxH29r2hwkZph7xY4L+pH7knLDJkrIamDzkBM1YIRVLZw9HVoNcAWwIDAQAB ++oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAHMqrcsyYja9 ++kzBjXMp6bIEWpHGQOBoFUZMV9xGtsCWOXt179s5suPi3cnayIlIy0/kGECtd7Vbi ++YZGlNhnmAg1nr3nEa3mvXWgIdOwjhKiIxZGUgZ4QG9kniXoRQR5y5t5tINipuf0c ++thg2JpTDrtckgdMvaT/rs/9W0SQP7EhW6JXxTUHNtTQRnx8Yhb8iNdil42cZUUzf ++O7UUzHnxIr9cH5NnNVzz5SEXYdQSIAvhVppg3C7NSOMfe4djqd79oojjymXpws37 ++qKfbSQey8GJR7IrcAbt5Dpw7RsvPsYr0gTILyakyoqO0sNzP2GWT2ysivM0QQQov ++2TwZyRM05pc= + -----END CERTIFICATE----- +--- puma-5.6.5.orig/examples/puma/client-certs/client.key ++++ puma-5.6.5/examples/puma/client-certs/client.key +@@ -1,27 +1,27 @@ + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +--- puma-5.6.5.orig/examples/puma/client-certs/client_expired.crt ++++ puma-5.6.5/examples/puma/client-certs/client_expired.crt +@@ -1,19 +1,19 @@ + -----BEGIN CERTIFICATE----- + MIIDBDCCAeygAwIBAgIBFzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB +-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMTkw +-ODAxMDAwMDAwWhcNMjAwODAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0 ++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjUx ++MDAxMDAwMDAwWhcNMjYxMDAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0 + MRQwEgYKCZImiZPyLGQBGRYEcHVtYTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN +-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoywLJRT7wZM1P3Abg9NIT+NJ8TkS +-IBz8ZgyyhSW1lU/tcsNEJakIl22XAeLEHfMknMzDqvU1G256hqM+/Tgohreat+yc +-ofy+2OOu4un+44qIGX82i2PCt+afVvbGhPpHioyAJRDXZd9V4FtESH+6As7m+6MH +-E4yX547E6XmmJ9lp8z9FnBMi1a6C01bI6mZhMuReLl2bS0FWjqrwNN3PpizBD+Vv +-FbUIndC+UiD0kYPxTwSDCpEq/To0FrNCdAj94Y4oZVuvx8B1mHiqwkqmlOLUZslS +-u7CFInqbswq5LnGFRIVSg3bu4bgCbCEmJhfqxp5MODT4VBXa2sCOnG7BBwIDAQAB +-oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAHDfDovSTCmM +-sxDCfTGQUYwnvOohTP0hjUHB6BzNAPVKYoBiq064m/JoDFmOGGtF3CqhWqtE2psl +-eOK8fA/QomyFaIAowhx8qrswMP7T/rRldAG+9QHBYZGkPtbB8evK6XqrMEQTf2Ux +-FlN3p7BZl9rhtuManMb+Wud3HfLYjXn2nTRvkOTi93MP05Vrho8KegZ9Kj4wY1rK +-gOnkbI6bv+1r9yjsZuUKPH/OjFkpmAoOab5hX5R5CmEefGAet2KPCNrApuwfvRHT +-x9jVwtOYBHq3DVcBDBu+O38L+WlKGeXvUK4AzvxQaVUysCG3DA1zrvyI3Y8Jy2Jk +-KfmWZWlvXlM= ++BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlfZAk/6RuOY5RI4uzGfTNTr4AVpO ++2Xqw1HVOZcojQmUqUBKxIkmk75Rlbh4HO7ORnfXDUYTogVEcgbOtPDN3PNkBgA/J ++lelbJl7gklNDYs3aK70KFKe5YVgONPUuzg9jwpwK/K+iCOCh2ynXq/QAzJk7K7ad ++fdAQGtiHnGKWO085jmOPIuPmjcf393VUKnhC2B+dsThalii2OjKI95vhxVohqyPk ++MGk7EquEwQE1yKG0+WUw6qJ8KigQeiN0rKX8F4Zw582e1j2K7zQqWOJu1YD0UVch ++Q8YQRxH29r2hwkZph7xY4L+pH7knLDJkrIamDzkBM1YIRVLZw9HVoNcAWwIDAQAB ++oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAELNjE/D13Ya ++8DznEAMiGA7+66nK6F4GVlj8BOagpty8rb0TqNP0l5MGH+r5WtoSs+UMuoezb3VP ++A+LZg8fr0EJClvK4GFRpp6sRQxJmeXYSN+2VTUJFwkvhxeOEGFGFHkCn78ByBpxK ++XDwvytxkyZUzzis2EMvk93h5s2pD36xaITJ+O5tn3d7bsls9877Q93bRLRdfniow ++d3VnQmOT4nSPAZ/dne3IS4Pi+YD/QtYQyLh2tERwXtoBkzzolWKSAmUDmR13ltAp ++bHrbh02GJjZgjf5BWSQuBIST+b1tGoMCGXY6fFxHPVL2HSo8obzA4R0uLTup4mXx ++i5z+vwqMdQw= + -----END CERTIFICATE----- +--- puma-5.6.5.orig/examples/puma/client-certs/client_expired.key ++++ puma-5.6.5/examples/puma/client-certs/client_expired.key +@@ -1,27 +1,27 @@ + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +--- puma-5.6.5.orig/examples/puma/client-certs/client_unknown.crt ++++ puma-5.6.5/examples/puma/client-certs/client_unknown.crt +@@ -1,19 +1,19 @@ + -----BEGIN CERTIFICATE----- + MIIDBTCCAe2gAwIBAgIBEzANBgkqhkiG9w0BAQsFADA5MRMwEQYKCZImiZPyLGQB +-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTIw +-MDgwMTAwMDAwMFoXDTI0MDgwMTAwMDAwMFowPzETMBEGCgmSJomT8ixkARkWA25l ++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI2 ++MTAwMTAwMDAwMFoXDTMwMTAwMTAwMDAwMFowPzETMBEGCgmSJomT8ixkARkWA25l + dDEUMBIGCgmSJomT8ixkARkWBHB1bWExEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIw +-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKQo9ve3XI5fiKE5AKI3Qm7aeGwy +-uIR5RBo58Na4saBSfCaKZvNwzuEimKN6S4ShUlV0egKwCs/KvzbhQJpIxVsLQCGs +-AQDxdOGP1FyizQvzDhzL7BC2I/Dp3A5V6uXkxo1qTqoBdTYeJ/mdIVgZ7bgTnUdu +-uY9KErU/ugR8MbqZyQel/04PSmkCTdhzP41w0xvmc7Jgab0vJ0oXU4knXIyKsLeq +-BkL6fevPW4fdaU+ppXBvpsgWfACk/WZs+DyhPndcX7JNrcnYIIAJy75wivqw2RDB +-m59XNhoDwbR21EkcZnlQL59pv4ASA7DrJs+tFoGqsCs7DyEioePNp6ZraSkCAwEA +-AaMSMBAwDgYDVR0PAQH/BAQDAgSwMA0GCSqGSIb3DQEBCwUAA4IBAQBMbPmIekCi +-TMLtclXtkhKUefb9hoALhABwRbTbzPjz+MGJX2BMwLt8bAs6AMY8jEazvfm9+G0m +-1liBAGWFojSzAykNIq/zAG2tgDVolQp3x4JcyFDJ0cuR8DIdll2CCnLM2jP8Nek8 +-wSyuWDsm1U5kmos/dP/ialCvvCLHULoSCBhsyBFKmH2ViXdW09Wg4jSQ4RIToBBn +-w/VbObeKA8NBUW6/7w6MS1oeFL3PlZJ205zVrZ68nqm/ckYyaBAdlQNTmlThNSQ5 +-eL7w2QgfYDM72Sk4/rjZsW0kH+V0ZqmIuyVBE6jo5EulGPLo2eQEfPmhEdbo5rFi +-foV+QKM8z3K0 ++DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkNySbzjqbbzIf0mDuksPz2vMnU ++kTVupWI9Wl+jY3ndOOaBMYW9nRTU793WaT2cojGbHoM1Vsou+2rgh82ImEB8/iTs ++Cc+ZhMDN14AdAMyhgTqDTWcMXtuNT3lICdsN30TJcZDnFgwgQcHGehHNYuFrh0Sg ++6j5OAA6DC9JRU34qNUGwOl/n6PvWjLqKOxoKOJSlppzY16Wk46gqyGEttIZ+7N5j ++SClwMcH8nelu92AvABcV910xiy3DIZNIn47r5J3fFDmeaEAttLWP6d77GY85gnkN ++pXf/cgKZLbsCh4LB1GfhjtNFR0ShivXwabB3khQAhhSv8QzARZd5MVkdnH8CAwEA ++AaMSMBAwDgYDVR0PAQH/BAQDAgSwMA0GCSqGSIb3DQEBCwUAA4IBAQBCXujxzfsv ++PuVwIAIUyXcI1CBs7zJC1JfteyKpy81FZ4eU3OSO80cMXsgYrXgGhY6tBGt/5Pu5 ++29SUiACOjfURFYKkFYyJ2MelOAaq0C2BaQomgO1wTd/79B0XX+0noJOS8qgO/i25 ++mqByrafXqWa9eN8qczWXKHa6VcBoXuZo+30be5LrAEZGaWnYUVpEac3JqM9Ts12N ++Svp0KJBxgSBwpYPQvLgVF/I09SkbIoY5dYSNX/FtzXhDLxjt7HC2RslK7Hid6C0f ++lG5h0KYC30JQTjEaObBMHwYMXnw0hKS+aygH7Di2kvhriD8iHG2zi1431boDxeiP ++E0XnJ5+AE8/a + -----END CERTIFICATE----- +--- puma-5.6.5.orig/examples/puma/client-certs/client_unknown.key ++++ puma-5.6.5/examples/puma/client-certs/client_unknown.key +@@ -1,27 +1,27 @@ + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +--- puma-5.6.5.orig/examples/puma/client-certs/server.crt ++++ puma-5.6.5/examples/puma/client-certs/server.crt +@@ -1,19 +1,19 @@ + -----BEGIN CERTIFICATE----- + MIIDBDCCAeygAwIBAgIBBzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB +-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjAw +-ODAxMDAwMDAwWhcNMjQwODAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0 ++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjYx ++MDAxMDAwMDAwWhcNMzAxMDAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0 + MRQwEgYKCZImiZPyLGQBGRYEcHVtYTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN +-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvXOg3gTrGJfVft9cSrfGRnEZezDB +-L93fcLwJAoaXGxbEg1RW/fOrSpSNemuqOvbzczV7m5eYTf1lHPBJsndbYyijIR1+ +-Fp4tjFDp76SC3hxCIc3uYXIz0qQwSOAi1z15zobS4xF29jlsXWtfBl9fivjzdj/f +-pbZ+JPYOrlcJAf6Xmr3xh//13rOI0ytBMlWf51z/iAZBLm2wvbt+nR7B6koAdTgM +-Coe+gOtcLWYY5ApJ4qB9knGdxWoF5p7guHHw2aGTM0jyhgBowfVkFRiE2JUmODae +-g+dHsd8ogWbqhGyZTredJF/NRrLKU0h+t7ldKHvXEZy4qyqQlvKoTpODqQIDAQAB +-oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAI/bcQP4Hu9O +-OtaaIjVxN8+9jXUOrMpSogmZ4bRKImispt9SA+sbxec7iOMM2pG3Py2yi0hWGzii +-hSebWIsM1JuPj7ks9l8nGRxpGeInJwTkJorG4ZLEypoS2wW3fQZGx3o4da5V+U2Z +-HEY0wQTbPBqqnyeZ16ZFNVCzw8y9l7y7CEFjvUO3sq0pne9r7Z+XVgjGyBdBYkJS +-0kcqPBXFCMHrWH5UlacYlM5cqgoVztOp2STGmR3XR7a34oueeA10QSP+jzeYvWA1 +-wTYA762uU2ReCdujfNbf8V1tZWAH36KldM3hhDNWeveAGxxj1h2R9T/k2kHl/a7D +-I3VdS59vjJY= ++BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnihQ8P6kgn066bN+g+i76KYdFo9g ++sHwmxYZrZroK8E496NptIpmFpRe7lwRQNcCVYVfi/tSCh/UgI5gD8isvMl6wj0aR ++4RT+5xGmiql0J8yOqrIQh3pkWIEeH2Yj04IAS3fOLjEPzSKFRmk9ji3fzdOBM67E ++FRX4ETU47zVRaQsLdFd/TkxZ0PNW4RC6U9YFtG157hPQZ+f4absQx83cI5aFCzSP ++nsK5vQUK4hMP2fYyDaIDgiWtmDc+nHzrUfzs5tavxIqj2FDLucM9bln4XrdedOzL ++Uun39J6Ywcz+VQPc02yR6zSFRsW5Q9RgloPMKFSa0kHvGxW0qSR1ckOFgQIDAQAB ++oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAELzAVm3cFIj ++iQWCrhYdS1SBTeOZv4+bIuj+nmOSLcJbn5sGp3OStXXlYvZvxV7KveX1rfHonSSg ++/fUFk+6jFZNfl0m7aqG2MbQ9xasva3SJI/jFapAqAiXVMXAfEBj36D9KJc5lHHTM ++wxByYLtt3mxleunitpw7RbPbgu1ChNu480TNV3yk9iYzmTNaG24aZpd9wEIcrrNU ++oxdE777aISQwFVa+5edsHkdZV4zQUOlTvitPkR9lO0Kh7jXGlqgFd1nMQ+aOMBdA ++6D3NbkW93mTXIQA2rGEyasbUUZBVzplj1E9cqreLLqD9M7r5dQdEaxwqhjTLY+sG ++0MG7o0Hfu4U= + -----END CERTIFICATE----- +--- puma-5.6.5.orig/examples/puma/client-certs/server.key ++++ puma-5.6.5/examples/puma/client-certs/server.key +@@ -1,27 +1,27 @@ + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +--- puma-5.6.5.orig/examples/puma/client-certs/unknown_ca.crt ++++ puma-5.6.5/examples/puma/client-certs/unknown_ca.crt +@@ -1,19 +1,19 @@ + -----BEGIN CERTIFICATE----- + MIIDEDCCAfigAwIBAgIBETANBgkqhkiG9w0BAQsFADA5MRMwEQYKCZImiZPyLGQB +-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTIw +-MDgwMTAwMDAwMFoXDTI0MDgwMTAwMDAwMFowOTETMBEGCgmSJomT8ixkARkWA25l ++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI2 ++MTAwMTAwMDAwMFoXDTMwMTAwMTAwMDAwMFowOTETMBEGCgmSJomT8ixkARkWA25l + dDEUMBIGCgmSJomT8ixkARkWBHB1bWExDDAKBgNVBAMMA0NBVTCCASIwDQYJKoZI +-hvcNAQEBBQADggEPADCCAQoCggEBAJXBTI7itz3JCkNRpR3Jdas/HK2+WLoy3cck +-taH0OUHPxSEDteNCRlwR07cEWThl6QMQROHEJLCVPIjCLXmu2uwJ6SjPb7keRXJb +-mOHWo0ZXyc0xnLIv8anWXFAlMconvtpSoYgyNUFwYQdhWTv3I9HrdqCrez70+DXy +-q3gsTgvixwUIUm+/kWs6zfIHCtwiAusM2Xjrc9Aa/+5JTa3rsdXUXxyrakoKr2ED +-0BrhWRmopM+xf7V42dNpwuFnrtqDfmyPKtzZbv5J8w6oq7BGC2+CL7MYo1fnonWP +-kxRZCYzp/qtkhotHHypnpZuQh2puOwnisGykA8rSX/hltCklx5ECAwEAAaMjMCEw ++hvcNAQEBBQADggEPADCCAQoCggEBALIp4dTrRiijv2sILN7SgCAR3bOdWzCL/Yew ++AplM1qkwPB0KYa+6dXndtxVb5TdV5P83t74evZ7wHfPbdvDKgpIPDsjgbRd8O1i0 ++9Itp9iUv6BpErqThtM0SPqcvr5dHlZStjvOzbDWApv5S1usgcnDRxNObYGPQ2MTK ++0OgpflMkPCVvFX05DEP2BPXmJOLfWVHSHPKYfl0lba7tTbTa74xhiULhgS7wCL7X ++UVHY6RlzfLGrA5B9TL6xsWPX+WUYUbuD9mxeCtxyXnNGjXAfzW37swEteJXxtHCP ++8BwJ9afz6wp0vLeniOIpSKNWrAtOhtqZrg0i/wo+z4llX9DzVjkCAwEAAaMjMCEw + DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQAD +-ggEBAFH23fStJpmaYUwqIhuWfId4a75eJvp5zpedU4e9Adl+a87u+iNrppa34fPs +-Ni1XhrGYbh4gTSRmy39R1JW3O5LUDJ6LlDkZOgduiMyLvVksmD70MPuyaBrPmIWE +-mauOzk3TtvKI4+wBEzLAdYUhliAtMyRJaUN5Bbe+q3P9tL7Hsh9uKusJ5jyMetI7 +-8lLZqKHvE4MDV3AqS6OLLlTC1WdTKR9fqdHYwyh8+DFMBm7PuZjFP9tjDiQwhfEX +-zbj9J8ba94BA8jmh3Z8a/S0rzcF33KPn+DWyrnyLWWSWKTLHN9TpVHRlhQ4OEOYZ +-LVu0+VBx8eIwdLZplDfQ9sGUjCs= ++ggEBAGrpVgbp+YSXCBX7KnNe3fpBFOEPJECvI0XzFTNKeYCm8R6I3Qmketel3TxZ ++1Ff7yjZxvdIl51Xw41yC5aSCWDhxh4YkzvgOdCOexWsHUt2LGDQptSnyKCC28syz ++WP4lCwneVdzEVrorNDEnPQ/sYMhdYp5QD7u/enUnyDvAu5licur/m0sWPlpRasE7 ++/bcJr/Pa3mGC4iXZ0gauK8i0M4B/3HVm6gL7TOCJImV4aQ7CyDXqK+FJLO+sjcOI ++GXuJf/YLjIvhZarRccW1bDt5AbKudgzXGTjXDGC40uahaPJZMLm9jundBbGD1mPW ++JGDp4c/0dMVyKK3MMiEn6QQvDT0= + -----END CERTIFICATE----- +--- puma-5.6.5.orig/examples/puma/client-certs/unknown_ca.key ++++ puma-5.6.5/examples/puma/client-certs/unknown_ca.key +@@ -1,27 +1,27 @@ + -----BEGIN RSA PRIVATE KEY----- +-MIIEowIBAAKCAQEAlcFMjuK3PckKQ1GlHcl1qz8crb5YujLdxyS1ofQ5Qc/FIQO1 +-40JGXBHTtwRZOGXpAxBE4cQksJU8iMItea7a7AnpKM9vuR5FcluY4dajRlfJzTGc +-si/xqdZcUCUxyie+2lKhiDI1QXBhB2FZO/cj0et2oKt7PvT4NfKreCxOC+LHBQhS +-b7+RazrN8gcK3CIC6wzZeOtz0Br/7klNreux1dRfHKtqSgqvYQPQGuFZGaikz7F/ +-tXjZ02nC4Weu2oN+bI8q3Nlu/knzDqirsEYLb4IvsxijV+eidY+TFFkJjOn+q2SG +-i0cfKmelm5CHam47CeKwbKQDytJf+GW0KSXHkQIDAQABAoIBAAHmslIeDrV6F+dC +-4hW+uP+zjWmnQPkcLDSbArNLpm5vdNE2etinvrzsfQOVyowsvwiK7FTxaIXVXy9d +-R7aDwcO9XHhoKcLv33HUN9ymHOyHsMgqGRMqCKdfUUyzLC6k0odzBRn1iTeLda/i +-TH+2Y34GvzrK8oWaFoyYyBR+e38rHOMBF5gmQSkwHZ+8qOsHuI7ajukLioRXLElq +-ivrOdeaiNmTfofXiDakZm5/SKJ2pXbzQkeibqLkTXeU/p3ltjVrg0GbgF1l5SjmK +-OyFUeTRjmA8KAFpPri2WggZ6rW9N58u7iF1+hIxRua42lHQ3UXvza41cLX0IjxkT +-dL0e5QECgYEAxC7kswPej/Omo8T0hZtWHAB6eyas43VzCyypdrDKyfKJGbVWBC61 +-YsOI7L2K1biKsx7gyidOVlNdp3ycmgyyBuH4vn8UhEzOpLLnEw1HX9KDfKQL9yjG +-f7GYUiHIOE1ah0X45PMpuk/FI0JvFdQCG3MKe7ypM7h2QV2wSM43n3cCgYEAw2p0 +-Dc8AmkEIOP2ZtB4jadD/XTZpxotd6rqZkGt0YWW4fkzdJGjeDhs+W4pT6tG85fFW +-Bmxz80YsbG9ktHiUTZAS89ixxUnmecudsp4xlTGsGaIboQLPwST8S7iA2AXq0fgW +-rZX/OiKM+IVbszBWrVpCNHKGPnfiO6PE3GiU4zcCgYBZXTcGKIQQNJ+6x/POjIS7 +-+qfQQzzL2+tMssp662tkdFtpX4XQH+q2E3XiyTBdzFM55p3k1+TCQ/VMXuIC9jd+ +-FR82vzJ8VXRn56qEri7OAlmsxBlDO8q3zhEhkIvgwbO0HPaUbAOc/8tAFXn+inVv +-RYcH+Fdm3ObZPbEYaP9DXwKBgF14JqiQMbaWkotH6eP4YnHzsKFyLGf2M2bZ+CfW +-7eTEVdm7hC8tJcFTkKESag8wYQ0PQVlzOIbNMuRu55lW74CmABq4tFcsgNwS44wT +-FJ5LEwlzu4lpIdw9h5vkVWR+eBIUeyxuSZUR/6HDj9gGr/7c5DvX55QrnX9vVvMh +-5s1DAoGBAICs0BjCHmAOcEXIHzt3gTju6oj2sQ/Fob03XsEKcfR6Ci32sBQekdqA +-rpkNiJKzrHjo79nDDcioXGvDD5Duv0fTxFmYME2lTm6nvKS8QF4b+K8C/UKzhpmt +-zAvwVTOtLnMpHNcKvadSPKFMWNl8M12oi8ELGGPouuh24zX4eyAe ++MIIEpAIBAAKCAQEAsinh1OtGKKO/awgs3tKAIBHds51bMIv9h7ACmUzWqTA8HQph ++r7p1ed23FVvlN1Xk/ze3vh69nvAd89t28MqCkg8OyOBtF3w7WLT0i2n2JS/oGkSu ++pOG0zRI+py+vl0eVlK2O87NsNYCm/lLW6yBycNHE05tgY9DYxMrQ6Cl+UyQ8JW8V ++fTkMQ/YE9eYk4t9ZUdIc8ph+XSVtru1NtNrvjGGJQuGBLvAIvtdRUdjpGXN8sasD ++kH1MvrGxY9f5ZRhRu4P2bF4K3HJec0aNcB/NbfuzAS14lfG0cI/wHAn1p/PrCnS8 ++t6eI4ilIo1asC06G2pmuDSL/Cj7PiWVf0PNWOQIDAQABAoIBABATRdhhiyDHF5In ++eG75dMyP+B5I/C2e7/cCe1WMMJEu9DmVkndZ3lgq2GZhtoad5i3d/+L0YJ0a4sT6 ++QBrdVtcpaybWUxmLoMox95+tpaM41ZsrJ8viPp9DPmp028XNVHKID24vOfwA2fB4 ++FoK8GH9T+guyyQlwkmJ9P0i3V7nWFDj1/vRpo+lfyEm7FXU0oftU/lp5LjyysXKy ++v9Vt4Ugpjw25XJPjD7TsjTNysBoXTmR+xp5tiWQv7rRL4H+3eCxBDn8xzZVQthIp ++6gJhHpdBlCUB8uiISVG2+cUl0TB8SwRZuSznupZLBsJZP0yUX22lr+PxuhRlCtF5 ++kWsGm7UCgYEA583dFZzngw1aH8P4hgGSXpJXzPrfeuJq8AFcq9dFAcUN6AU+iuq1 ++ZlAYxEYvVdkzF/h8EsaW1YZPWSuPvllf2rr3jEUxphe0iH9juQm/HODsTyGdMluN ++YxjCfJltnhKNAbEDxwZ3RVdl/+Av9mAVDpf5Ngi3/2DOC1ADTPsmgwUCgYEAxMKq ++sNa22SnOvwr4bL7bhenfhb/UmoAGJjXBRShU+E7GRSft0s9YA+rXnKnTb95sz/e+ ++pTv4M6yRR0sZn8tg2GwnNROEM13VRdZGSXYTljlCi22dBxNoxcG6DokiH5JOraoQ ++NeDxxXONlpuaZxmq1MPOlarA/5d4AkA6btl6lKUCgYBvg7HgO+OEQGAi9/wPO6JW ++rMBgdDAexd38KCuU37Lq7wmJnTxBSDiMR+wiQEF1Y1AZMAlAXxkhD8QMedBlGknq ++yBde+8quxKitIduvoOi309zbFKizGSgjjD3EA2ugp/v93FKc5JdsXGdNeWSZeg+n ++PaU+QWODD+cPuiZcWlZkoQKBgQCfORC77eUls0lVG+GQzpoCshFpwKShKjzPquxt ++tIeeMNENoZQ45gVJlj9Izb0GaC4R1V/3gqIF3v3pfYKM5x3FxS+tKc/vaV1vGEjk ++paKQDGInRlquISzF61FO9fYhKlp0+owHrbK4oBvR5rV5/TFa3+FLCFUKAF7jI2ql ++zWP+6QKBgQCtQzcwp3cf+/MPycimNeePSKXXbl3zIASzBxNKW/dooROeqKySyfDn ++DxlhgeDUpWeBWZ5O1w4HFgRukjV8PnGNwDMOYQi2PLw8n3jK3xuSV5GVN2A92tMa ++BUY9ZvrQGh6CdJpJ8nsgi3OBwukPh6nRQ3R4f8BIwLx8/Vnv+JfAdQ== + -----END RSA PRIVATE KEY----- +--- puma-5.6.5.orig/examples/puma/puma_keypair.pem ++++ puma-5.6.5/examples/puma/puma_keypair.pem +@@ -1,27 +1,27 @@ + -----BEGIN RSA PRIVATE KEY----- +-MIIEpAIBAAKCAQEAv2lrSC+U13CB7+5pk0TmFPIEsfd5DN124ZxiOhLLoBWBpvwz +-yzk7tE8wQM5FXrFG4Z82BEjjQqTHgTzDmJwdKn1a6awSLkWsohwhe22q4t1wGRQS +-r03+Y9VkCWDkmvkh4/NZp8zSBN0qVHUs39QdxVowda3j8rPaNr3CVSFoqXLv5QbU +-l0eFDXKsBVVRMs31hPxVOTJoHXX4rSYql28dzIW4HjIFy8J3iIZIip/vCOUQhGnw +-9r0Lq1HyACUKLgA+XOaeBih3fBtcCESmyO9JcJYJ14coP/ACAHPVpsDjI2dIiFvg +-oUWQYyf4XvhmN4Jk3bzuXP/XyBAufTrcRdUogQIDAQABAoIBAQC3fm3UE5kSNs65 +-ncoj3cbbiW8q1Fx9EslmWq5nkaEW48cYt2lHhqRPpCJT3enubu/OVvxHe0AxoRmI +-MSIo6G+lTeqbW9NJ/I0UEveeBXHube2KfQ20dIZMWkK+It7EGdR9W8o07ErhUsvD +-j1jnccbgbCdMiNiez/9+vsbPKWnWFaok28+k3SHzsxVQm9zW3X9RVEACcoWeUW1O +-6SWUwdEttP9+X+zAOONGtuzbR4lYwI7rl0DDoQ1oY6oROLU9XTXEs5hlSSvxQQLV +-u4AHogcUlnNPbd31NnjYtsBeh/TKJ4njYqooCTHjtkUtYbOCt8X6Yd7U4KwtViNd +-RIrTSxHJAoGBAOi33Bbbnty03gm2tYO16RgVTsPnzruJsCWOJbviNW/NIzB85j8a +-S1OCH+10/MBUEOl/Q7S7xFsBVvmNA9pyw1RiRHGxRVTRl4XbpPhDhDCo/m3U4/6Y +-MyLAprOcUJP/b6pbNzjnowuQDqvFm/I60tazSPobhMoxo06NbOFiNqF7AoGBANKP +-qXKI8P06TQ+gK+DfXwAslcHtQzTPEoVl5GuvUcL+HOMzR7zQwLVOwA0FCyBtYewd +-byOhsDqOQFyQCGCk9JUmvbrzx5fg5IWWz245pvwIrQ0X2H7YemeRsGS5DGQXpuvi +-2aQWbXdI27v83OTCDZbo27mNTCPqy7MLKa+Wp+czAoGAO+z8c7ZiFhtNAdtWqm/x +-cg4qli/fAFPYVBNijBsX/44nfZjsAVvYAc0EQ7VYUH5VTItE+AlR6s1RhDlXwKzE +-t7oGPfCUFd9S0VlaBcP9Cjq6KbYkb67pnA1X3/Bkn3erXYbXlYOwbI3P+VONcLbN +-DBRmumDTtO1LTDMG0pLj1nkCgYEAvo+mGzI0Z/lLpMig7XM61z2Ci2/fUvvVF0WP +-5KVWqdKw8i6GzitfPLd4uE/IMiDMbpR08Rp0E4qKVTtFWbHwaMwXCgt2p82xA/Xo +-5SjoJ1DyzNa36JSisvj3WzDeNffx6an0rrxddYdK1meSwrWc9ubndJacQiVNFU0U +-/QSsEGECgYBinPeuJEPabDpvTsAvtuQHoh1jLAVZutvCdFUvG0Ozf2GJQ0evDYml +-UqWG9YElKfTN8NDLQehNANuUMRjDIqNF7B6Y0/dg2HJJjv5OXoYUDhGzV7RitFyV +-qfdp99aSQpIsmevzUMbHa/0Uh5e3bnnIH+9QYQJSaI7D/8oD2OhBVQ== ++MIIEpAIBAAKCAQEAxipYtm6MlI+RwSnI9DqXTscVXQFnwerT4dpG1+mBBjpjO+az ++zDZr9nVlDhIw0GuEQagPHFay7vrl+UX9/3wjPN50OT+BdbkgH2WGnel0A2JWTBI/ ++6BhPneD4I3tYnDfHHpStxM/+HP9B77A6ykfiYx2/jAXzLE0V/iS27Kvk66D8x/F5 ++bm/Xhve4482GvR8e4AUNKV0bMO7J1Qxts8fbkdwOrPTEvPU96TvOwFKbexTHA7Gd ++OhYAAwmjm/KHI07RKlCUvEZqnVCrWKUWxrFXb1a2dg1WmxUXrzzTrVANCnrbJfgn ++Wo+yF3pqupmHWEWLL0fnpgM9eo1DQ+EeZiokcwIDAQABAoIBAAusdYxnR8XKpvUm ++z00/4Sde+y2yH8wgvfmfxuBnEFaiSU0/XAq+jy6chmb4gFxB/fw/xVNPvvu5pDzC ++hRUWjLbdve5pBM9ydLRH+7dBIbhY6lxR3Bm0/blMH7uekD8ODbjwXKo4iUlpA7F2 ++HSIXopXHLCae0ei9FvuuBJtwzUWdT0o4htpHfbzx2NyRR02IzgzOvj3SfK6DaTF8 ++8u/jmEgjaAVglme1sUpKVZZSCT5txGpt1cGOiC5SCRsbyMzuRteSp4ZKe5sDbn3D ++rbA90CxNaCKhtzvZAeShUEg2ol2IVrVFlRXMM5KMeryKO5Jym1FeX/9NuMfiEzf/ ++nJ2T7QUCgYEA9EYTEvPsxHSTQnPFU+lw9+WN+VyjYuN22oXxdR07JbpKehjRTZRH ++TZH/6y0cOdvw0peg8Ltj+OcdzFGRBvW3OjJSSpt+SBvCZmaFZyVDRdqwLBxlQ4mB ++xYkZXRzkxFeTIvcP5JI3+53ivt0X/0Rcm6GKrfmsn/cf6fottzlHMIUCgYEAz62j ++a4Y4JNjS4V3tTIHwvbLKvjksHBWu27ipAqa7zhiE84BboWr+1gl6ZnB1TfTncCKv ++Gcywafj+vnYh4FvN9w+Nn61dC67FACnb0lr7oZpvHd9W0/259OHwZck+uA3ax6Oj ++fpMu9Fn1o513cfOhycrNxY3NOvHEw5wfAjoUTpcCgYEAoRiZubUen81V1MxvBdD9 ++jK9ae2rJ4gyrNKCDRj5Z5J7AQVeeqXAxugmgYqPkapAPeYNAQ6MB4oPhVf8xCwr/ ++pKTNOqDjnoCYK1pPfl/HxwjbiKvNaMYFzJWHIa5NfONYiQWw+Igp3YoZoNBE5Ddc ++b9MQl34Ch5i99lvkzGI8/dUCgYAgzdyyb1EPAPDOiHejTiMo08USpxVAmmw0aMbJ ++lGy18UmO7QeMR8pZJMYgyEK/PaARJmliOeLj2mDi1OYk+lteWyaTwl6gKcsUa4g9 ++ggGdVTeYEF82vS1ScR339gHiMM4OGtsIc1dHYa5bWdQ0O7eimFZIjk2MsgPSoiaD ++w4jRoQKBgQCbyu0MTJZfh7+9ZAVExgALZR9QHpMwF5DeVj/vUL2NKXsziFRRG+Qc ++LkQh+OWj4NST5MfYpwZzzBWOFZxnW+0QKJOX3wCTqcoMVv+XgsNI2Er8V6aLQQ3z ++IVJFUMlobZAJPksm6YaLM5UF3vZG319U8z5uIeMH3FxCSMqY3K2mRw== + -----END RSA PRIVATE KEY----- diff --git a/patches/series b/patches/series new file mode 100644 index 0000000..2e02e41 --- /dev/null +++ b/patches/series @@ -0,0 +1,10 @@ +0004-puma.gemspec-drop-git-usage.patch +0011-disable-minitest-extensions.patch +0012-disable-cli-ssl-tests.patch +0013-fix-test-term-not-accepts-new-connections.patch +0014-disable-test-failing-on-amd64.patch +CVE-2023-40175.patch +CVE-2024-21647.patch +CVE-2024-45614.patch +CVE-2026-47736_37.patch +new-certs-generated.patch diff --git a/puma.1 b/puma.1 new file mode 100644 index 0000000..47a94c3 --- /dev/null +++ b/puma.1 @@ -0,0 +1,165 @@ +.TH PUMA "1" "January 2020" "PUMA 3.12" "User Commands" + +.SH NAME +puma \- fast, concurrent web server for ruby and rack + +.SH USAGE +.BI "puma [options...]" " [rackup file]" +.PP +.B puma [\-h | \-\-help | \-V | \-\-version] + +.SH OPTIONS +.PP +The following options are available: +.TP +.BI "\-b, \-\-bind " URI +URI to bind to (tcp://, unix://, ssl://). +.TP +.BI "\-C, \-\-config " PATH +Load given path as a config file. +.TP +.BI "\-\-control " URL +DEPRECATED alias for \fB\-\-control\-url\fR. +.TP +.BI "\-\-control\-token " TOKEN +The \fITOKEN\fR to use as authentication for the control server. +.TP +.BI "\-\-control\-url " URL +The bind \fIURL\fR to use for the control server and app. Use \fIauto\fR to +use a temp unix server. This requires to use a \fB\-\-control\-token\fR, which +needs to be given with every request to the control server (\fItoken=foo\fR). +.TP +.B \-d, \-\-daemon +Demonize the server into the background. +.TP +.B \-\-debug +Show low level debugging information. +.TP +.BI "\-\-dir " DIR +Change to given directory before starting. +.TP +.BI "\-e, \-\-environment " ENVIRONMENT +The environment to run the Rack app on. Default \fIdevelopment\fR. +.TP +.BI "\-I, \-\-include " PATH +Specify \fB$LOAD_PATH\fR directories. +.TP +.BI "\-p, \-\-port " PORT +Define the TCP port to bind to. Use \fB\-b\fR for more advanced options. +.TP +.BI "\-\-pidfile " PATH +Use the given path as PID file. +.TP +.B \-\-preload +Preload the application. This loads all the application code prior to forking. +Preloading reduces total memory usage of an application and is only available +in cluster mode. +.TP +.B \-\-prune\-bundler +Prune out the bundler env if possible. +.TP +.B \-q, \-\-quiet +Do not log requests internally. Default: \fItrue\fR. +.TP +.B \-v, \-\-log-requests +Log requests as they occur. +.TP +.BI "\-R, \-\-restart\-cmd " CMD +The \fBpuma\fR command to run during a hot restart. Default: \fIinferred\fR. +.TP +.BI "\-S, \-\-state " PATH +Where to store the state details. +.TP +.BI "\-t, \-\-threads " INT +Min:max threads to use. Puma will automatically scale the number of threads, +from the minimum until it caps out at the maximum, based on how much traffic +is present. Default: \fI0:16\fR. +.TP +.B \-\-tcp\-mode +Run the app in raw TCP mode instead of HTTP mode. +.TP +.B \-\-early-hints +Enable early hints support. +.TP +.BI "\-w, \-\-workers " COUNT +Activate cluster mode and define number of worker processes to create. In this +mode workers are forked from a master process. Each child process still has +its own thread pool and the \fB\-t\fR setting is per worker. +.TP +.BI "\-\-tag " NAME +Additional text to display in process listing. +.TP +.BI "\-\-redirect\-stdout " FILE +Redirect \fBSTDOUT\fR to a specific file. +.TP +.BI "\-\-redirect\-stderr " FILE +Redirect \fBSTDERR\fR to a specific file. +.TP +.B \-\-[no\-]redirect\-append +Append to redirected files. +.TP +.B \-h, \-\-help +Show help. +.TP +.B \-V, \-\-version +Print the version information. + +.SH EXAMPLES +.PP +The following examples show how to bind TCP or sockets: +.PP +Bind Puma to a socket with the -b (or --bind) flag: +.RS +.B puma -b tcp://127.0.0.1:9292 +.RE +.PP +To use a UNIX Socket instead of TCP: +.RS +.B puma -b unix:///var/run/puma.sock +.RE +.PP +To change the permissions of the UNIX socket, add a umask parameter: +.RS +.B puma -b 'unix:///var/run/puma.sock?umask=0111' +.RE +.PP +In need of a bit of security use SSL sockets: +.RS +.B puma -b 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert' +.RE +.PP +The following example show how to Create a control server and use +.BR pumactl (1) +to interact with the control server to restart \fBpuma\fR. +.RS +.B puma --control-url tcp://127.0.0.1:9293 --control-token foo +.br +.B pumactl --control-url 'tcp://127.0.0.1:9293' --control-token foo restart +.RE +.PP + +.SH "CONFIGURATION FILE" +.B puma +will look for a configuration file at \fIconfig/puma.rb\fR. If an environment +is specified, either via the \fB\-e\fR and \fB\-\-environment\fR flags, or +through the \fIRACK_ENV\fR or the \fIRAILS_ENV\fR environment variables, it +looks for configuration at \fIconfig/puma/.rb\fR. +.PP +The \fB\-C\fR flag allows one to pass on a custom configuration location. If +the value specified is a dash (\fI\-\fR) \fBpuma\fR won't look for any +configuration file: +.PP +.RS +.B puma -C \(dq\-\(dq +.RE + +.SH "SEE ALSO" +.PP +There is extensive documentation at <\%https://puma.io/puma/\%> and +<\%https://github.com/puma/puma\%>. + +.SH AUTHOR +.PP +This manual page was written by \fBDaniel Leidert\fP +<\%dleidert@debian\.org\%>, for the Debian GNU/Linux system (but may be used by +others). diff --git a/puma.docs b/puma.docs new file mode 100644 index 0000000..b43bf86 --- /dev/null +++ b/puma.docs @@ -0,0 +1 @@ +README.md diff --git a/puma.examples b/puma.examples new file mode 100644 index 0000000..e39721e --- /dev/null +++ b/puma.examples @@ -0,0 +1 @@ +examples/* diff --git a/puma.lintian-overrides b/puma.lintian-overrides new file mode 100644 index 0000000..c5391ca --- /dev/null +++ b/puma.lintian-overrides @@ -0,0 +1,2 @@ +# this is one of several sub-directories; no need to rename it +repeated-path-segment puma usr/share/doc/puma/examples/puma/ diff --git a/puma.manpages b/puma.manpages new file mode 100644 index 0000000..c9bff2d --- /dev/null +++ b/puma.manpages @@ -0,0 +1,3 @@ +debian/puma.1 +debian/pumactl.1 + diff --git a/pumactl.1 b/pumactl.1 new file mode 100644 index 0000000..67e70d6 --- /dev/null +++ b/pumactl.1 @@ -0,0 +1,99 @@ +.TH PUMA "1" "January 2020" "PUMA 3.12" "User Commands" + +.SH NAME +pumactl \- command line client for puma + +.SH USAGE +.B pumactl [options...] [commands] +.PP +.B pumactl [\-h | \-\-help | \-V | \-\-version] + +.SH COMMANDS +.TP +.B halt +Halt the server. +.TP +.B restart +Restart the server. +.TP +.B phased-restart +Restart server but phase out old workers while starting new workers one at a +time. +.TP +.B start +Start the server. +.TP +.B stats +Show stats about the server. +.TP +.B status +Show server status. +.TP +.B stop +Stop server. +.TP +.B reload-worker-directory +Reload the worker directory. +.TP +.B gc +Start garbage collector. +.TP +.B gc-stats +Show information about garbage collector. + +.SH OPTIONS +.PP +The following options are available: +.TP +.BI "\-F, \-\-config\-file " PATH +Load given path as a config file. +.TP +.BI "\-T, \-\-control\-token " TOKEN +The \fITOKEN\fR to use as authentication for the control server. +.TP +.BI "\-C, \-\-control\-url " URL +The bind \fIURL\fR to use for the control server and app. Use \fIauto\fR to +use a temp unix server. This requires to use a \fB\-\-control\-token\fR, which +needs to be given with every request to the control server (\fItoken=foo\fR). +.TP +.BI "\-p, \-\-pid " PID +Define the TCP port to bind to. Use \fB\-b\fR for more advanced options. +.TP +.BI "\-P, \-\-pidfile " PATH +Use the given path as PID file. +.TP +.B \-Q, \-\-quiet +Don't display messages. +.TP +.BI "\-S, \-\-state " PATH +Where the state file is. +.TP +.B \-H, \-\-help +Show help. +.TP +.B \-V, \-\-version +Print the version information. + +.SH EXAMPLES +Create a control server and use +.BR pumactl (1) +to interact with the control server to restart \fBpuma\fR. +.RS +.B puma --control-url tcp://127.0.0.1:9293 --control-token foo +.br +.B pumactl --control-url 'tcp://127.0.0.1:9293' --control-token foo restart +.RE +.PP + +.SH "SEE ALSO" +.PP +.BR puma (1) +.PP +There is extensive documentation at <\%https://puma.io/puma/\%> and +<\%https://github.com/puma/puma\%>. + +.SH AUTHOR +.PP +This manual page was written by \fBDaniel Leidert\fP +<\%dleidert@debian\.org\%>, for the Debian GNU/Linux system (but may be used by +others). diff --git a/ruby-tests.rake b/ruby-tests.rake new file mode 100644 index 0000000..412b8da --- /dev/null +++ b/ruby-tests.rake @@ -0,0 +1,30 @@ +require 'gem2deb/rake/testtask' + +Gem2Deb::Rake::TestTask.new do |t| + t.libs = ['test'] + if ENV['AUTOPKGTEST_TEST_PUMA_SERVER_SSL'] + ENV['OPENSSL_CONF'] = '' # https://github.com/puma/puma/issues/2147 + t.test_files = FileList['test/test_*_ssl.rb'] + else + t.test_files = FileList['test/**/*_test.rb'] + FileList['test/**/test_*.rb'] - FileList[ + 'test/test_*ssl.rb', + 'test/test_integration_systemd.rb', + 'test/test_integration_cluster.rb', + 'test/test_integration_pumactl.rb', + 'test/test_worker_gem_independence.rb', + 'test/test_preserve_bundler_env.rb', + 'test/test_request_invalid.rb', + 'test/test_busy_worker.rb', + ] + end + t.verbose = true +end.tap do |t| + exclude = %w[ + test_application_logs_are_flushed_on_write + test_hot_restart_does_not_drop_connections + test_logs_all_localhost_bindings + test_multiple_requests_waiting_on_less_busy_worker + test_term_not_accepts_new_connections + ] + t.options << ' ' << "-e'/" << exclude.join('|') << "/'" +end diff --git a/rules b/rules new file mode 100755 index 0000000..fef8de6 --- /dev/null +++ b/rules @@ -0,0 +1,12 @@ +#!/usr/bin/make -f + +export GEM2DEB_TEST_RUNNER = --check-dependencies +export DH_RUBY = --gem-install +export DH_RUBY_GEM_INSTALL_EXCLUDE = benchmarks/* docs/* win_gem_test/* tools/* bin/puma-wild +export LANG = C.UTF-8 + +%: + dh $@ --buildsystem=ruby --with ruby + +override_dh_installchangelogs: + dh_installchangelogs History.md diff --git a/salsa-ci.yml b/salsa-ci.yml new file mode 100644 index 0000000..33c3a64 --- /dev/null +++ b/salsa-ci.yml @@ -0,0 +1,4 @@ +--- +include: + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/source/lintian-overrides b/source/lintian-overrides new file mode 100644 index 0000000..362d49e --- /dev/null +++ b/source/lintian-overrides @@ -0,0 +1,2 @@ +# no signed tarballs by upstream +puma source: debian-watch-does-not-check-gpg-signature diff --git a/tests/control b/tests/control new file mode 100644 index 0000000..e4c5aad --- /dev/null +++ b/tests/control @@ -0,0 +1,4 @@ +Test-Command: export AUTOPKGTEST_TEST_PUMA_SERVER_SSL=1 && gem2deb-test-runner --check-dependencies --autopkgtest +Depends: @, @builddeps@ +Restrictions: allow-stderr +Features: test-name=ssl diff --git a/upstream/metadata b/upstream/metadata new file mode 100644 index 0000000..5d1f0b9 --- /dev/null +++ b/upstream/metadata @@ -0,0 +1,7 @@ +--- +Archive: GitHub +Bug-Database: https://github.com/puma/puma/issues +Bug-Submit: https://github.com/puma/puma/issues +Changelog: https://github.com/puma/puma/tags +Repository: https://github.com/puma/puma.git +Repository-Browse: https://github.com/puma/puma diff --git a/watch b/watch new file mode 100644 index 0000000..5ce4047 --- /dev/null +++ b/watch @@ -0,0 +1,5 @@ +version=4 +opts="searchmode=plain, \ + filenamemangle=s/.+\/v@ANY_VERSION@/@PACKAGE@-$1\.tar\.gz/" \ +https://api.github.com/repos/puma/puma/releases \ +https://api.github.com/repos/puma/puma/tarball/v@ANY_VERSION@